import config from '@/config'
import { JSONFileSyncPreset } from 'lowdb/node'
import path from 'path'

export interface DB {
  /**
   * 限制 IP
   */
  limitInfo: LimitInfo[]

  /**
   * 验证失败记录
   */
  verifyFailureRecord: {
    [ip: string]: VerifyFailureRecordItem
  }
}

export type VerifyFailureRecordItem = {
  /**
   * 失败次数
   */
  count: number
  /**
   * 最后一次失败的时间
   */
  timestamp: number
}

export type LimitInfo = {
  ip: string
  /**
   * 限制的时间（< 0 表示无限）
   */
  time: number
  /**
   * 限制开始的时间
   */
  startTime?: number
}

export const defaultDB: DB = {
  limitInfo: [],
  verifyFailureRecord: {}
}

export const db = JSONFileSyncPreset(path.join(config.defaultCacheDir, 'db.json'), defaultDB)

db.write()

export type DBInstance = typeof db
